// pages/recipe/add/add.js
Page({
  data: {
    userInfo:{},
    types:'add',
    _id:'',
    showDialog1:false,
    db:null,
    count:0, // 库存
    image: '', // 菜谱图片
    name: '', // 菜谱名称
    categories: [],
    categoryIndex: 0, // 当前选中的分类索引
    price: '', // 菜谱价格
    rate: 5, // 默认3星
    typeId:'',
    statusList: [],
    status: '正常', // 默认状态
    description: '', // 菜谱描述
    isPublic: true, // 是否公开
  },
  onLoad(options) {
    console.log('options',options)

    this.setData({ 
      loading: true,
      userInfo:wx.getStorageSync('userInfo')
    });
    if(options && options.types){
      this.setData({
        types:options.types
      })
      let title = '添加新菜谱'
      if(this.data.types === 'show'){
        title = '展示菜谱'
      }else if(this.data.types === 'edit'){
        title = '编辑菜谱'
      }
      wx.setNavigationBarTitle({
        title: title
      })
    }
    // 在任何页面/组件中获取
    const app = getApp();
    console.log(app.globalData.env); // 输出: your-env-id
    // 获取默认环境的数据库引用
    this.setData({
      db:app.globalData.db
    })
    this.data.db.collection('statusList').where({}).get()
    .then(res => {
      console.log('res',res)
      if(res && res.data && res.data.length > 0){
        this.setData({
          statusList:res.data
        })
      }else{
        this.setData({
          statusList:[]
        })
      }
    })
    this.data.db.collection('type').orderBy('order','asc')
    .where({
      _openid:this.data.userInfo._openid
    })
    .get()
    .then(res => {
      console.log('res',res)
      if(res && res.data && res.data.length > 0){
        this.setData({
          categories:res.data,
        })
        if(options && options.id){
          this.setData({
            _id:options.id
          })

          this.loadCategoryData(options.id)
        }
      }else{
        wx.showToast({ title: '加载分类数据为空', icon: 'none' })
        this.setData({ loading: false });
      }
    })
    .catch(err => {
      wx.showToast({ title: '加载分类数据失败', icon: 'none' })
      this.setData({ loading: false });
    })

    if(options && options.activeId){
      app.globalData.activeId = options.activeId
    }
  },
  loadCategoryData(_id) {
    wx.showLoading({
      title: '加载中...',
    })
    this.data.db.collection('message')
    .where({
      _id: _id,
      _openid:this.data.userInfo._openid
    })
    // .orderBy('createTime', 'desc')
    .get()
    .then(res => {
      console.log('res',res)
      if(res && res.data && res.data.length === 1){
        this.setData({
          count:res.data[0].count,
          image: res.data[0].image, // 菜谱图片
          name: res.data[0].name, // 菜谱名称
          price: res.data[0].price, // 菜谱价格
          rate: res.data[0].rate, // 默认3星
          typeId:res.data[0].typeId,
          status: res.data[0].status, // 默认状态
          description:res.data[0].description, // 菜谱描述
          isPublic: res.data[0].isPublic, // 是否公开
          _id:res.data[0]._id
        })
        console.log('index this.data.categories',this.data.categories)
        const index = this.data.categories.findIndex(item => item._id === res.data[0].typeId);
        console.log('index',index,res.data[0].typeId)
        this.setData({
          categoryIndex:index
        })
      }else{
        wx.showToast({ title: '加载数据为空', icon: 'none' })
      }
    })
    .catch(err => {
      wx.showToast({ title: '加载数据失败', icon: 'none' })
    }).finally(( ) => {
      wx.hideLoading()
    })
    return;
    this.setData({ loading: true });
    

    // 模拟API请求
    setTimeout(() => {
      const mockData = this.generateMockData();
      this.setData({
        categories: mockData,
        loading: false
      });
      console.log('mockData',mockData)
    }, 800);
  },
  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        console.log('res',res)
        const tempFilePaths = res.tempFilePaths
        // this.setData({
        //   image: tempFilePaths[0]
        // })
        // 这里可以添加图片上传到云存储的逻辑
        this.uploadImage(tempFilePaths[0])
      }
    })
  },

  // 移除图片
  removeImage() {
    this.setData({
      image: ''
    })
  },

  // 上传图片到云存储
  uploadImage(filePath) {
    wx.showLoading({
      title: '上传中...',
    })
    
    wx.cloud.uploadFile({
      cloudPath: 'recipe-images/' + Date.now() + '-' + Math.random().toString().substr(2, 5) + '.jpg',
      filePath: filePath,
      success: res => {
        console.log('上传成功', res.fileID)
        this.setData({
          image: res.fileID
        })
        wx.hideLoading()
      },
      fail: err => {
        console.error('上传失败', err)
        wx.hideLoading()
        wx.showToast({
          title: '上传失败',
          icon: 'none'
        })
      }
    })
  },

  // 菜谱名称变化
  onRecipeNameChange(e) {
    const value = e.detail.value
    if (value.length > 10) {
      this.setData({ name: value.slice(0, 10) }); // 强制截断
      wx.showToast({
        title: '输入长度不能超过10个字',
        icon: 'none'
      })
    } else {
      this.setData({ name: value });
    }
  },
  onRecipCountChange(e){
    console.log('onRecipCountChange',e.detail.value)
    this.setData({
      count: e.detail.value
    })
  },
  // 选择分类
  onCategoryChange(e) {
    console.log('onCategoryChange',e.detail.value)
    this.setData({
      categoryIndex: e.detail.value
    })
  },

  // 价格变化
  onPriceChange(e) {
    this.setData({
      price: e.detail.value
    })
  },

  // 改变状态
  changeStatus(e) {
    this.setData({
      status: e.currentTarget.dataset.label
    })
  },
  // 描述变化
  onDescriptionChange(e) {
    const value = e.detail.value
    if (value.length > 100) {
      this.setData({ description: value.slice(0, 100) }); // 强制截断
      wx.showToast({
        title: '输入长度不能超过100个字',
        icon: 'none'
      })
    } else {
      this.setData({ description: value });
    }
  },
  // 描述变化
  onChange(event) {
    this.setData({
      rate: event.detail,
    });
  },

  // 切换公开状态
  togglePublic(e) {
    this.setData({
      isPublic: e.detail.value
    })
  },

  // 表单验证
  validateForm() {
    if (!this.data.image) {
      wx.showToast({
        title: '请上传菜谱图片',
        icon: 'none'
      })
      return false
    }
    
    if (!this.data.name.trim()) {
      wx.showToast({
        title: '请输入菜谱名称',
        icon: 'none'
      })
      return false
    }
    if(this.data.categories.length === 0){
      wx.showToast({
        title: '请选择菜谱分类',
        icon: 'none'
      })
      return false
    }
    
    if (this.data.price === '') {
      wx.showToast({
        title: '请输入菜谱价格',
        icon: 'none'
      })
      return false
    }
    if (!(/^\d*$/.test(this.data.price))) {
      wx.showToast({
        title: '请输入合理的菜谱价格',
        icon: 'none'
      })
      return false
    }
    // if (this.data.count === '') {
    //   wx.showToast({
    //     title: '请输入库存',
    //     icon: 'none'
    //   })
    //   return false
    // }
    // console.log('this.data.count',this.data.count)
    // if (!(/^\d*$/.test(this.data.count))) {
    //   wx.showToast({
    //     title: '请输入合理的库存',
    //     icon: 'none'
    //   })
    //   return false
    // }
    return true
  },

  // 提交表单
  submitForm() {
    if (!this.validateForm()) return
    console.log('this.data.categories[this.data.categoryIndex]',this.data.categories[this.data.categoryIndex])
    const formData = {
      image: this.data.image,
      name: this.data.name,
      typeId: this.data.categories[this.data.categoryIndex]._id,
      price: parseFloat(this.data.price),
      rate: this.data.rate,
      count:this.data.count,
      status: this.data.status,
      description: this.data.description,
      isPublic: this.data.isPublic,
      avatarUrl: this.data.userInfo.avatarUrl,
      nickName:this.data.userInfo.nickName,
    }
    
    wx.showLoading({
      title: '提交中...',
    })
    
    // 这里替换为你的数据库添加逻辑
    // 示例使用云开发数据库
    if(this.data._id){
      formData.updateTime = new Date()
      this.data.db.collection('message').doc(this.data._id).update({
        data: formData,
        success: res => {
          wx.hideLoading()
          this.back('更新')
          // this.loadCategoryData(this.data._id)
        }
      })
    }else{
      formData.createTime = new Date()
      formData.updateTime = new Date()
      this.data.db.collection('message').add({
        data: formData,
        success: res => {
          wx.hideLoading()
          this.back('添加')
          // this.setData({
          //   showDialog1:true
          // })
          // 添加成功后返回
          // setTimeout(() => {
          //   wx.navigateBack()
          // }, 1500)
        },
        fail: err => {
          console.error('添加失败', err)
          wx.hideLoading()
          wx.showToast({
            title: '添加失败',
            icon: 'none'
          })
        }
      })
    }

  },
  back(text){
    wx.showToast({
      title: `${text}成功`,
      icon: 'success'
    })
    wx.hideLoading()
    const app = getApp()
    app.globalData.refreshId = this.data.categories[this.data.categoryIndex]._id
    setTimeout(() => {
      wx.navigateBack()
    },500)
  },
  keepAdd(){
    this.setData({
      showDialog1:false,
      _id:'',
      db:null,
      count:0,
      image: '', // 菜谱图片
      name: '', // 菜谱名称
      categories: [],
      categoryIndex: 0, // 当前选中的分类索引
      price: '', // 菜谱价格
      rate: 5, // 默认3星
      typeId:'',
      status: 'normal', // 默认状态
      description: '', // 菜谱描述
      isPublic: true // 是否公开
    })
    
  }
})